#!/bin/bash

# 配置现有 PostgreSQL 数据库脚本

echo "配置现有的 PostgreSQL 数据库..."

# 检查 PostgreSQL 是否运行
if ! pg_isready -h localhost -p 5432 > /dev/null 2>&1; then
    echo "PostgreSQL 服务未运行，尝试启动..."
    systemctl --user start postgresql 2>/dev/null || echo "无法启动服务，请手动启动 PostgreSQL"
fi

echo "尝试连接到 PostgreSQL..."

# 尝试以当前用户连接
if psql -h localhost -p 5432 -U $USER -d postgres -c '\q' 2>/dev/null; then
    echo "使用当前用户 $USER 连接成功"
    DB_USER=$USER
elif psql -h localhost -p 5432 -U postgres -d postgres -c '\q' 2>/dev/null; then
    echo "使用 postgres 用户连接成功"
    DB_USER="postgres"
else
    echo "无法连接到 PostgreSQL，请检查："
    echo "1. PostgreSQL 是否正在运行"
    echo "2. 用户权限是否正确"
    echo "3. 是否需要密码认证"
    exit 1
fi

# 创建数据库和配置
echo "创建数据库和用户..."
psql -h localhost -p 5432 -U $DB_USER -d postgres << EOF
-- 创建数据库（如果不存在）
SELECT 'CREATE DATABASE product_showcase'
WHERE NOT EXISTS (SELECT FROM pg_database WHERE datname = 'product_showcase')\gexec

-- 连接到新数据库
\c product_showcase

-- 创建扩展
CREATE EXTENSION IF NOT EXISTS "uuid-ossp";

-- 创建更新时间函数
CREATE OR REPLACE FUNCTION update_updated_at_column()
RETURNS TRIGGER AS \$\$
BEGIN
    NEW.updated_at = NOW();
    RETURN NEW;
END;
\$\$ language 'plpgsql';

-- 显示数据库信息
\l product_showcase
EOF

if [ $? -eq 0 ]; then
    echo "✅ 数据库配置成功！"
    echo ""
    echo "数据库连接信息："
    echo "  主机: localhost"
    echo "  端口: 5432"
    echo "  数据库: product_showcase"
    echo "  用户名: $DB_USER"
    echo ""
    echo "请更新 .env.local 文件中的 DATABASE_URL："
    echo "DATABASE_URL=postgresql://$DB_USER@localhost:5432/product_showcase"
else
    echo "❌ 数据库配置失败"
fi